#include <iostream>
#include <cstring>
#include <stack>
using namespace std;
const int N=5*1e5+10;
const int INF=0x3f3f3f3f;
int a[N];
int sub[N];
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
		scanf("%d",&a[i]);
	sub[n]=INF;
	
	for(int i=n-1;i>=1;i--)
	{
		sub[i]=min(sub[i+1],a[i+1]);
	}
	stack<int> st;
	int k=-INF;
	bool flg=false;
	for(int i=1;i<=n && !flg;i++)
	{
		if(a[i]<k)
		{
			if(sub[i]<a[i])
			{
				flg=true;
				continue;
			}
		}
		while(st.size() && st.top()<a[i])
		{
			k=max(k,st.top());
			st.pop();
		}
		st.push(a[i]);
	}
	if(flg)
	{
		cout<<"YES"<<endl;
	}
	else{
		cout<<"NO"<<endl;
	}
	return 0;
	
	
}
